def GetErrorString(errno):
	try:
		return _errors[errno]
	except KeyError:
		return ""

_errors={
-1: # LM_NOCONFFILE "cannot find license file"
"""
The license file cannot be opened. FLEXlm will attempt to open the
standard file /usr/local/flexlm/licenses/license.dat,(or
C:\FLEXLM\LICENSE.DAT on Windows and Windows NT) or the file specified
by the vendor (via lc_set_attr()), or the file specified by the user in
LM_LICENSE_FILE.
""",
-2: # LM_BADFILE "invalid license file syntax"
"""
A feature name is > MAX_FEATURE_LEN,

A daemon name is > MAX_DAEMON_LEN.

A server name is > MAX_SERVER_NAME.

A feature specifies no hostid and # of licenses is <= 0.
""",
-3: # LM_NOSERVER "cannot connect to a license server"
"""
The daemon name specified in the license file FEATURE line does not
match the vendor daemon name.
""",
-4: # LM_MAXUSERS "licensed number of users already reached",
"""
The licenses number of users has been reached.
""",
-5: # LM_NOFEATURE "no such feature exists"
"""
The feature could not be found in the license file.
""",
-6: # LM_NOSERVICE "no TCP "license" service exists"
"""
This happens if a SERVER line does not specify a TCP/port number, and
the TCP license service does not exist in /etc/services.
""",
-7: # LM_NOSOCKET "no socket connection to license manager server"
"""
lc_disconn() was called after the process had been disconnected from
the socket. This error can also occur if an internal error happens
within l_sndmsg() or l_rcvmsg().
""",
-8: # LM_BADCODE "encryption code in license file is inconsistent"
"""
The code in a license file line does not match the other data in the
license file. This is usually the result of not building all the
software components with the same encryption seeds. Check makekey.c,
lsvendor.c, and your application code carefully to insure that they are
all built with the same vendor code.
""",
-9: # LM_NOTTHISHOST "invalid host"
"""
The hostid specified in the license file does not match the node on
which the software is running.
""",
-10: # LM_LONGGONE "feature has expired"
"""
The feature has expired, i.e., today's date is after the expiration
date in the license file.
""",
-11: # LM_BADDATE "invalid date format in license file"
"""
The start or expiration date in the license file is invalid.
""",
-12: # LM_BADCOMM "invalid returned data from license server"
"""
The port number returned from lmgrd is invalid.

An attempted connection to a vendor daemon did not result in a correct
acknowledgment from the daemon.

The daemon did not send back a message within the timeout interval.

A message from the daemon had an invalid checksum.

An lc_userlist() request did not receive the correct data.
""",
-13: # LM_NO_SERVER_IN_FILE
"""
"no SERVER lines in license file"

There is no SERVER line in the license file. All non-zero license count
features need at least one SERVER line.
""",
-14: # LM_BADHOST "cannot find SERVER hostname in network database"
"""
The gethostbyname() system call failed for the SERVER nodename in the
license file.
""",
-15: # LM_ CANTCONNECT "cannot connect to license server"
"""
The connect() system call failed, while attempting to connect to the
daemon.

The attempt to connect to the vendor daemon on all SERVER nodes was
unsuccessful.

lc_status() returns LM_CANTCONNECT if the feature had been checked out
but the program is in the process of reconnecting.

If reconnection fails, the final status return is LM_CANTCONNECT.
""",
-16: # LM_CANTREAD "cannot read data from license server"
"""
The process cannot read data from the daemon within the timeout
interval.

The connection was reset by the daemon (usually because the daemon
exited) before the process attempted to read data.
""",
-17: # LM_CANTWRITE "cannot write data to license server"
"""
The process could not write data to the daemon after the connection was
established.
""",
-18: # LM_NOSERVSUPP "license server does not support this feature"
"""
The feature has expired (on the server node), or has not yet started,
or the version is greater than the highest supported version.
""",
-19: # LM_SELECTERR "error in select system call"
"""
The select() system call failed. This should never happen in a client
program.
""",
-20: # LM_SERVBUSY "license server busy (no majority)",
"""
The license server is busy establishing a quorum of server nodes so
that licensing can start. This error is very rare, and checkout should
be retried if this occurs.
""",
-21: # LM_OLDVER "license file does not support this version"
"""
The version requested is greater than the highest version supported in
the license file FEATURE line.
""",
-22: # LM_CHECKINBAD "feature checkin failure detected at license server"
"""
The checkin request did not receive a proper reply from the vendor
daemon (the license might still be considered in use).
""",
-23: # LM_BUSYNEWSERV "license server temporarily busy (new server connecting)",
"""
The vendor daemon is in the process of establishing a quorum condition.
New requests from clients are deferred during this period. This request
should be retried.
""",
-24: # LM_USERSQUEUED "users are queued for this feature"
"""
This error is similar to MAXUSERS, but supplies the additional
information that there are other users in the queue for this feature.
""",
-25: # LM_SERVLONGGONE "license server does not support this version of this feature"
""" 
The version specified in the checkout request is greater than the
highest version number the daemon supports.
""",
-26: # LM_TOOMANY "request for more licenses than this feature supports"
"""
A checkout request was made for more licenses than are supported in the
license file. This request will never succeed.
""",
-27: # LM_CANTREADKMEM "cannot read /dev/kmem"
"""
The file /dev/kmem is not readable on this system. This error will only
occur if using extended hostid checking, which is no longer supported
in current versions of FLEXlm.
""",
-28: # LM_CANTREADVMUNIX "cannot read /vmunix"
"""
The file /vmunix is not readable on this system. This error will only
occur if using extended hostid checking, which is no longer supported
in current versions of FLEXlm.
""",
-29: # LM_CANTFINDETHER "cannot find ethernet device"
"""
The ethernet device could not be located on this system.
""",
-30: # LM_NOREADLIC "cannot read license file"
"""
The license file could not be read (errno == EPERM or EACCES).
""",
-31: # LM_TOOEARLY "feature not yet available"
"""
The feature is not enabled yet (current date is before the feature
start date).
""",
-32: # LM_NOSUCHATTR "No such attribute"
"""
A call to lc_get_attr() or lc_set_attr() specified an unknown attribute
code.
""",
-33: # LM_BADHANDSHAKE "Bad encryption handshake with daemon"
"""
The client performs an encryption handshake operation with the daemon
prior to any licensing operations. This handshake operation failed.
""",
-34: # LM_CLOCKBAD "Clock difference too large between client and server"
"""

The date on the client system does not agree closely enough with the
date on the server (daemon) system. The amount of difference allowed is
set by the software vendor with lc_set_attr(LM_A_MAX_TIMEDIFF, ...).
""",
-35: # LM_FEATQUEUE "In the queue for this feature"
"""
This checkout request has resulted in the process being placed in the
queue for this feature. Subsequent calls to lc_status() will yield the
status of this queued request.
""",
-36: # LM_FEATCORRUPT "Feature database corrupted in daemon"
"""
The daemon's run-time feature data structures have become corrupted.
This is an internal daemon error.
""",
-37: # LM_BADFEATPARAM "Duplicate selection mismatch for this feature"
"""
The checkout request for this feature has specified a duplicates mask
that does not match the mask specified by an earlier checkout. This is
probably the result of using different versions of your client
software, or from having an uninitialized variable in the dup_group
field for lc_checkout().
""",
-38: # LM_FEATEXCLUDE "User/host on EXCLUDE list for feature"
"""
The user/host/display has been excluded from this feature by an
end-user's daemon option file.
""",
-39: # LM_FEATNOTINCLUDE "User/host not on INCLUDE list for feature"
"""
The user/host/display has NOT been included in this feature by an
end-user's daemon option file.
""",
-40: # LM_CANTMALLOC "Cannot allocate dynamic memory"
"""
The malloc() call failed to return sufficient memory.
""",
-41: # LM_NEVERCHECKOUT "Feature was never checked out"
"""
This code is returned by lc_status() if the feature requested has never
been checked out.
""",
-42: # LM_BADPARAM "Invalid parameter"
"""
A call to lc_set_attr() specified an invalid value for its attribute.

lc_get_attr(LM_A_MASTER,...) called without connection already
established to server.
""",
-43: # LM_NOKEYDATA "No FLEXlm key data supplied in lc_init() call"
"""
No FLEXlm key data was supplied to the lc_init() call. Some FLEXlm
functions will be disabled.
""",
-44: # LM_BADKEYDATA "Invalid FLEXlm key data supplied"
"""
Invalid FLEXlm key data was supplied to the lc_init() call. Some FLEXlm
functions will be disabled.
""",
-45: # LM_FUNCNOTAVAIL "FLEXlm function not available in this version"
"""
This FLEXlm function is not available. This could be a result of a
BADKEYDATA, NOKEYDATA, or DEMOKIT return from lc_init().
""",
-47: # LM_NOCLOCKCHECK "Clock setting check not available in daemon"
"""
lc_checkout() returns this code when the CLOCK SETTING check between
client and daemon is not supported in this daemon. Try calling:

lc_set_attr(LM_A_MAX_TIMEDIFF, -1)

to disable the clock check.
""",
-48: # LM_BADPLATFORM "FLEXlm platform not enabled"
"""
The software is running on a platform which is not supported by the
vendor keys you have purchased. To purchase keys for additional
platforms, contact Globetrotter Software, Inc.
""",
-49: # LM_DATE_TOOBIG "Date too late for binary format"
"""
The expiration date format in FLEXlm licenses are good until the year
2027. This is probably a bogus date.
""",
-50: # LM_EXPIREDKEYS "FLEXlm key data has expired"
"""
The FLEXlm Demo vendor keys have expired. Contact Globetrotter Software
for new demo keys.
""",
-51: # LM_NOFLEXLMINIT "FLEXlm not initialized"
"""
A FLEXlm function was called before lc_init() was called. Always call
lc_init() first.
""",
-52: # LM_NOSERVRESP "Server did not respond to message"
"""
UDP communications failure. UDP communications are not guaranteed.
FLEXlm makes a best effort to recover from lost and garbled messages,
but this indicates a failure.
""",
-53: # LM_CHECKOUTFILTERED "Request rejected by vendor-defined filter"
"""
lc_checkout() failed because of the vendor defined routine which is set
in lsvendor.c: ls_outfilter.
""",
-54: # LM_NOFEATSET "No FEATURESET line present in license file"
"""
lc_ck_feats() called, but no FEATURESET line in license file.
""",
-55: # LM_BADFEATSET "Incorrect FEATURESET line in license file"
"""
Error return from lc_ck_feats()
""",
-56: # LM_CANTCOMPUTEFEATSET "Cannot compute FEATURESET line"
"""
Error return from lc_ck_feats(), which occurs because lc_feat_set() can
not compute the FEATURESET line. This can happen because there's no
FEATUREs in the file.
""",
-57: # LM_SOCKETFAIL "socket() call failed"
"""
This can occur when the Unix OS runs out of system resources.
""",
-58: # LM_SETSOCKFAIL "setsockopt() failed"
"""
The setsockopt() call has failed. This is likely due to an OS error.
""",
-59: # LM_BADCHECKSUM "message checksum failure"
"""
Communications error -- messages between client and server are
encrypted and checksummed for security and integrity. The checksum will
usually fail because of poor networking communications.
""",
-61: # LM_SERVNOREADLIC "Cannot read license file from server"
"""
This occurs when the license file, via LM_LICENSE_FILE, or
lc_set_attr(LM_A_LICENSE_FILE, path), is incorrectly defined. This only
occurs when LM_LICENSE_FILE is set to port@host.
""",
-62: # LM_NONETWORK "Network software (tcp/ip) not available"
"""
This is reported on systems where this is detectable. Some systems may
have this problem, but the error will not be reported as LM_NONETWORK -
system calls will simply fail.
""",
-63: # LM_NOTLICADMIN "Not a license administrator"
"""
Various functions, such as lc_remove() and lc_shutdown(), require that
the user be an license administrator, depending on how lmgrd was
started. See lmgrd(), lmremove() and lmdown().
""",
-64: # LM_REMOVETOOSOON "lmremove request too soon"
"""
An lc_remove request occurred, but ls_min_lmremove (defined in
lsvendor.c) seconds have not elapsed since the license was checked out.
See ls_vendor().
""",
-65: # LM_BADVENDORDATA "Bad VENDORCODE struct passed to lc_init()"
"""
LM_CODE macro was not used to define the VENDORCODE argument for
lc_init. See lm_code.h and lmflex.c for an example of how to use the
LM_CODE macro.
""",
-66: # LM_LIBRARYMISMATCH "FLEXlm include file/library mismatch"
"""
An attempt was made to create a licensed binary with mismatching
source/header files and liblmgr.a. The source code version must match
the linking libraries.
""",
-71: # LM_BAD_TZ "Invalid TZ environment variable"
"""
On some operating systems, the end-user can significantly change the
date using the TZ environment variable. This error detects this type of
theft.
""",
-72: # LM_OLDVENDORDATA "'Old-style' vendor keys (3-word)"
"""
V3.0 uses 4-vendor keys. This error detects that the LM_CODE macro was
used with only 3 keys.
""",
-73: # LM_LOCALFILTER "Local checkout filter requested request"
"""
Request was denied by filter specified in
lc_set_attr(LM_A_CHECKOUTFILTER, filter).
""",
-74: # LM_ENDPATH "Attempt to read beyond the end of LF path"
"""
An error occurred with the colon-separated list of license files.
""",
-75: # LM_VMS_SETIMR_FAILED "SYS$SETIMR call failed"
"""
SYS$SETIMR is used on VMS to time out certain FLEXlm system calls.
""",
-76: # LM_INTERNAL_ERROR "Internal FLEXlm Error - Please report to Globetrotter Software"
"""""",
-77: # LM_BAD_VERSION "Bad version number - must be floating point number, with no letters"
"""
A line in the license file has an invalid version number.

lc_checkout() was called with an invalid version character string.
""",
-78: # LM_NOADMINAPI "FLEXadmin API functions not available"
"""
An attempt to get information from another company's vendor daemon.

was made via lc_get_attr(LM_A_VD_*, ...). This function call is only
allowed for the client's own vendor daemon.
""",
-82: # LM_BADPKG "Invalid PACKAGE line in license file"
"""
PACKAGE missing or invalid COMPONENTS. A COMPONENT has number of users
set, with OPTIONS=SUITE. A COMPONENT has number of users==0
""",
-83: # `Server FLEXlm version older than client's
"""
Vendor daemon FLEXlm version is older than the client's FLExlm version.
This is only supported with a v5.0+ client.
""",
-84: # `Incorrect number of USERS/HOSTS INCLUDED in
""" options file -- see server log'

When a feature has the USER_BASED attribute, this error occurs when
there no INCLUDE line in the end-user options file for this feature, or
the number of users included exceeds the number authorized. See Section
10.1.4, `FEATURE or INCREMENT Line,' on page 86, especially USER_BASED.
""",
-85: # `Server doesn't support this request'
"""
This occurs when a vendor daemon with a FLEXlm version older than the
client is being used. The daemon didn't understand and respond to the
request made by the
"""}
